﻿Imports TNCDAL
Public Class ucDetailFeeAdvance
    Dim _idAdvance As Integer
    Dim mad As New MAdvanceVoucher
    Dim uti As New Utilities
    Dim isFile As Boolean = False
    Dim isNew As Boolean = False
    Dim isEdit As Boolean = False
    Dim isData As Boolean = False
    Dim newPrice As Double = 0
    Public Sub New(ByVal idAdvanceV As Integer)

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        _idAdvance = idAdvanceV
    End Sub
    Public Sub BindingInfo()
        Dim query = mad.GetVoucher(_idAdvance)
        For Each obj As tblAdvanceVoucher In query
            dateAdvance.Value = obj.CreatedDate
            txtAdvanceNo.Text = obj.AdvanceVoucherNo
        Next

 
        query = mad.GetListFileOrContOfAdvance(_idAdvance)
        cbFileCont.DataSource = query

        'Nếu là của file thì 

        'Lấy ra danh sách các file ứng với phiếu tạm ứng đang xét
        lblFileOrCont.Text = "File"
        cbFileCont.ValueMember = "ID_File"
        cbFileCont.DisplayMember = "FileNo"
        'Load danh sách phí

         


    End Sub
    Public Sub BindingGrid()
        Dim query


        query = mad.GetListDetailFee(_idAdvance, isFile)
        



        grid.DataSource = query
        grid.Columns(0).Visible = False
        grid.Columns(1).Visible = False
        grid.Columns(3).Visible = False


    End Sub
    Public Sub LoadCombo()
        'Load các phí vào combo
 
            uti.FillAllFeeCombo(cbFee, 1)


    End Sub
    Private Sub ucDetailFeeAdvance_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        BindingInfo()
        LoadCombo()

        BindingGrid()
        isData = True
        FormatGrid()
    End Sub

    Private Sub grid_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grid.RowEnter
        'Load vào các textbox
        Dim rw As Integer = e.RowIndex
        Dim dg As DataGridView = CType(sender, DataGridView)
        txtFileContFee.Text = dg.Item(0, rw).Value   'row.Item("id").ToString

        txtIDFileorCont.Text = dg.Item(1, rw).Value

        txtPrice.Text = dg.Item(5, rw).Value

        If dg.Item(3, rw).Value IsNot Nothing Then
            cbFee.SelectedValue = CInt(dg.Item(3, rw).Value)
        End If
    End Sub
    Private Sub EnableControl(ByVal v As Boolean)
        cbFee.Enabled = v
        txtPrice.Enabled = v

        If isNew Then
            txtPrice.Text = ""
            cbFee.Focus()
        End If

    End Sub
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

       

        isNew = True
        isEdit = False
        btnEdit.Enabled = False
        btnDelete.Enabled = False
        btncancel.Enabled = True
        btnSave.Enabled = True
        btnAdd.Enabled = False
        EnableControl(True)
    End Sub

    Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
        isNew = False
        isEdit = True
        btnEdit.Enabled = False
        btnAdd.Enabled = False
        btncancel.Enabled = True
        btnSave.Enabled = True
        btnDelete.Enabled = False
        EnableControl(True)
    End Sub

    Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Dim mbr As New MBuyingRate
        Dim isExistFileorCont As Boolean = False

        If isNew Then
            'Nếu là file chèn vào file


            'Kiểm tra xem là phí muốn thêm đã có trong filefee chưa
            isExistFileorCont = mbr.IsExistFee(txtIDFileorCont.Text, cbFee.SelectedValue)

            If isExistFileorCont = False Then

                If txtPrice.Text = "" Then
                    MessageBox.Show("Chưa nhập giá tiền")
                    Return
                    txtPrice.Focus()
                End If

                Dim obj As New tblFileFee
                obj.ID_AdvanceVoucher = _idAdvance
                obj.ID_File = txtIDFileorCont.Text
                obj.ID_Fee = cbFee.SelectedValue
                obj.Price = CDbl(txtPrice.Text.Replace(".", ""))
                mbr.InsertNewRecord(obj)
                newPrice = CDbl(txtPrice.Text.Replace(".", ""))
                BindingGrid()
                'Sau khi thêm thành công phải cập nhật lại tổng giá cho advanceVoucher
                'Lấy giá trị cũ và cộng thêm giá mới
                Dim amount As Double = mad.GetPrice(_idAdvance)
                amount += newPrice
                Dim obja As New tblAdvanceVoucher
                obja.ID_AdvanceVoucher = _idAdvance
                obja.Amount = amount
                mad.UpdatePrice(obja)
            Else
                MessageBox.Show("Phí đã được tạm ứng, chỉ sửa lại giá tiền")
                BindingGrid()

                Return

            End If

        ElseIf isEdit = True Then
            'Nếu sửa giá tiền
            'Lấy giá tiền của phí này hiện có trong CSDL
            Dim priceOld = mad.GetPriceOfFileFee(_idAdvance, txtIDFileorCont.Text, cbFee.SelectedValue)


            Dim obj As New tblFileFee
            obj.ID_AdvanceVoucher = _idAdvance
            obj.ID_File = txtIDFileorCont.Text
            obj.ID_Fee = cbFee.SelectedValue
            obj.Price = CDbl(txtPrice.Text.Replace(".", ""))
            mbr.UpdatePrice(obj)
            newPrice = CDbl(txtPrice.Text.Replace(".", ""))
            BindingGrid()
            'Sau khi thêm thành công phải cập nhật lại tổng giá cho advanceVoucher
            'Lấy giá trị cũ, trừ đi giá phí cũ và cộng thêm giá mới
            Dim amount As Double = mad.GetPrice(_idAdvance)
            amount -= priceOld
            amount += newPrice
            Dim obja As New tblAdvanceVoucher
            obja.ID_AdvanceVoucher = _idAdvance
            obja.Amount = amount
            mad.UpdatePrice(obja)

        End If

        EnableControl(False)
        btnSave.Enabled = False
        isNew = False
        isEdit = False
        btnAdd.Enabled = True
        btnEdit.Enabled = True
        btncancel.Enabled = False
        btnDelete.Enabled = True




    End Sub

    Private Sub btncancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncancel.Click
        btnAdd.Enabled = True
        btnEdit.Enabled = True
        EnableControl(False)
        btncancel.Enabled = False
        btnSave.Enabled = False
        btnDelete.Enabled = True
        BindingGrid()
    End Sub
 

    Private Sub cbFileCont_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFileCont.SelectedIndexChanged
        If isData Then
            'Nếu load xong dữ liệu
            BindingGrid()
        End If

    End Sub

    Private Sub chkAll_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
        BindingGrid()
    End Sub
    Private Sub FormatGrid()
        'Hiển thị grid
        grid.Columns(5).DefaultCellStyle.Format = "#,###"
        grid.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    End Sub

    Private Sub txtPrice_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPrice.TextChanged
        uti.FormatCurr(txtPrice)
    End Sub

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
        'Nếu xóa Phí tạm ứng
        'Xóa

        If (MessageBox.Show("Do you really want to delete selected record?",
                       "Delete Warning", MessageBoxButtons.YesNo,
                       MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, False) = DialogResult.Yes) Then






            'Cập nhật lại thông tin cho các phí có nó
            'Lấy giá trị tiền của phí này
            'Lấy giá tiền của phí này hiện có trong CSDL
            Dim priceOld = mad.GetPriceOfFileFee(_idAdvance, txtIDFileorCont.Text, cbFee.SelectedValue)

            'Cập nhật lại tổng tiền cho phiếu tạm ứng
            Dim amount As Double = mad.GetPrice(_idAdvance)
            amount -= priceOld

            Dim obja As New tblAdvanceVoucher
            obja.ID_AdvanceVoucher = _idAdvance
            obja.Amount = amount
            mad.UpdatePrice(obja)
            'Xóa phí thực sự
            Dim mb As New MBuyingRate
            mb.DeleteRecordOfAdvance(_idAdvance, cbFileCont.SelectedValue, cbFee.SelectedValue)

            BindingGrid()

 


        End If
    End Sub
End Class
